For Developers
__NOWYSIWYG__ The table below is color coded to show the status of development work on porting CHDK to different cameras. If there is some work being done to port to a particular camera, there should also be a link to a camera-specific development page. The page also has links to articles which could be useful if you want to participate in the development process. Cameras overview ;Legend : :* Black - neither original firmware nor firmware dump is available :* - Camera has responded to something on the card, but a firmware dump has not succeeded, current udumper code does not work on these cameras. :* - either original firmware or firmware dump is available; porting is needed :* - A developer has started the porting process for this camera AND an alpha or early beta build with a limited feature set is available for testing :* - A port has been completed on one or more firmware versions for this camera, the sources are in the trunk and the binaries are available from the Autobuild server. :* - There is no active development of CHDK for this Camera, but there is an active development and a working version of the Magic Lantern firmware addon for Canon DSLRs. Note: the porting process entails: # get the camera to somehow respond to something on the card. (cameras in ) # using the process that got you step 1, and some electronics, read out a copy of the existing firmware (e.g., dump the firmware). (cameras in ) # analyze the firmware, find out where key routines are. # modify the source code to add the locations of these key routines # compile the software and CHDK runs on the camera in some limited state (cameras in ) # After all minor bugs are fixed the build can be added to the trunk (cameras in ) Common articles ; Modifying the Source Code : Basic information about project structure. ; Compiling the CHDK under GNU/Linux ; Compiling the CHDK under Mac OS X ; Compiling the CHDK under Windows : How to tune build environment and compile CHDK. ;Obtaining a firmware dump : Various methods of getting of firmware dump. ;Adding support for a new camera : How to add support for a new camera model. ;Adding support of a new firmware version : How to add support for a new canon firmware revision of an already supported model. ;CHDK-PT : A tool for porting CHDK to different firmware versions of the same camera : Alternate software tool for porting between different firmware versions of the same camera. ;Loading dump to IDA : Using IDA for a dump analysis. ;IDA Visual Analysis : Visual graph analysis tools. ;Signature finder : Finding signatures automatically with the "Signature finder" (finsig/gensig) tool ;GPL Tools : Documentation for using GNU/GPL tools for binary blobs analysis ;CHDK Coding Guidelines : Cautions and best practices for CHDK code. ;Optimizing ARM sourcecode : How to make your CHDK code run more efficiently. ;Camera RAM memory usage : How to optimize RAM usage, also some statistics... ;Debugging : Tools and techniques for debugging CHDK code ;Adding Firmware Features : A guide for finding and adding stuff from the firmware to CHDK and uBASIC. ;PTP Extension : Article about the (experimental) CHDK PTP extension ;ExMem - enabling and loading CHDK into extended memory. : Article about using ExMem extended memory to load CHDK and increase free memory. ;DryOS Porting : Information about the new (in 2007) OS. This contains useful information from the initial porting effort, but DryOS is now well supported. Adding support for a new camera should be the primary reference. ; Camera Functionality Documentation : Reference for functionality found in camera (and used by CHDK). ; Documentation of the Sourcecode : Yes, some documentation is also required. ; Bug tracking and feature requests with Mantis : How to use Mantis to report bugs/issues found in CHDK, request features, submit contributions. Some technical info ;List of PropertyCases :List with description of special registers which indicate and control DIGIC processor. ;List of Params :List with description of special registers which indicate and control DIGIC processor. ;Camera IDs :List of camera product IDs, OS version and release dates. ;Event Procedure :List of camera Event Procedure ;Developer Technical Documents : Useful external documents relating to processor, OS and relevant standards. ;Canon error codes :List of error codes (and their textual representation) known by the firmware. Category:Development Category:CHDK internals Category:Porting